Действие | action
Тип функций action (действие) изменяет состояние игры.
Действия не могут входить в состав других действий, фактов или выражений, за
исключением условных конструкций.
На этапе парсинга определяется необходимое действие и подготавливаются его аргументы.
Выполнение действий происходит после однозначного разбора строки. покрась стены в зелёный цвет возьми 3 рубля Пример функции действия:
action (иди _act*Пф, location _напр*Ап)
{
-- check --
if(actor.loc == _напр) fail, "ты уже здесь"
if(нельзя_пройти) fail, "туда нет прохода"
Ok
-- execute --
goto напр
}
Секции в действияхВ действиях допускаются секции: parsing (парсинг) check (проверка) execute (выполнение) Пример:
action (Arg1, .. ArgN)
{
// общий код
-- parsing --
// код парсера
-- check --
// код проверки
-- execute --
// код выполнения
}
Секция parsing (парсинг)Секция универсальна для всех типов функций. Смотрите описание в разделе Парсерные функции. Секция check (проверка)В этой секции мы должны проверить физическую возможность выполнения команды. Есть ли у нас все предметы, названные в команде, соблюдены ли условия, необходимые для начала выполнения действия и т.п. Если действие невозможно, секция должна вернуть ошибку. Здесь имеет значение комментарий ошибки и её вес. В случае когда все возможные комбинации аргументов закончились ошибкой, комментарий ошибки с наибольшим весом будет показан игроку как реакция на его команду. Секция execute (выполнение)В секции execute (выполнение) описывается действие, соответствующее команде. Здесь можно изменить состояние игры, вывести текст с описанием произошедшего события и т. д. Смотрите такжеSystem_GetState, System states, System state value class |
to do: Проверить корректность. Добавить примеры. Дополнить. |